<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Promise中的特殊错误</title>
</head>
<body>
<script>
  /*
  * 因为executor函数外面包裹着try...catch...所以可以被捕获
  * */
  new Promise(((resolve, reject) => {
    throw new Error("123")
  })).catch(err =>{
    console.log(err);
  })


/*
* 因为executor是同步执行的，而这里的错误是后面抛出的所以无法捕获到
* */
  new Promise(((resolve, reject) => {
   setTimeout(()=>{
     throw new Error("234")
   },1000)
  })).catch(err =>{
    console.log(err);
  })

  /*
  * 异步操作中的错误可以调用reject传递，这样外部就可以catch到错误了
  *
  * */
  new Promise(((resolve, reject) => {
    setTimeout(()=>{
      reject(new Error("567"))
    },1000)
  })).catch(err =>{
    console.log(err);
  })
</script>
</body>
</html>